package com.healthyeating.manage.service.impl;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.healthyeating.common.utils.DateUtils;
import com.healthyeating.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.healthyeating.manage.mapper.SportMapper;
import com.healthyeating.manage.domain.Sport;
import com.healthyeating.manage.service.ISportService;

/**
 * 运动打卡Service业务层处理
 *
 * @author 段奇乐
 * @date 2025-03-19
 */
@Service
public class SportServiceImpl implements ISportService {
    @Autowired
    private SportMapper sportMapper;

    /**
     * 查询运动打卡
     *
     * @param sportId 运动打卡主键
     * @return 运动打卡
     */
    @Override
    public Sport selectSportBySportId(Long sportId) {
        return sportMapper.selectSportBySportId(sportId);
    }

    /**
     * 查询运动打卡列表
     *
     * @param sport 运动打卡
     * @return 运动打卡
     */
    @Override
    public List<Sport> selectSportList(Sport sport) {
        if (sport.getCreateTime() != null) {
            Map<String, Object> map = DateUtils.extractTime(sport.getCreateTime());
            sport.setStartOfDay((Date) map.get("startOfDay"));
            sport.setEndOfDay((Date) map.get("endOfDay"));
        }
        sport.setUserId(SecurityUtils.getUserId());
        return sportMapper.selectSportList(sport);
    }

    /**
     * 新增运动打卡
     *
     * @param sport 运动打卡
     * @return 结果
     */
    @Override
    public int insertSport(Sport sport) {
        sport.setCreateTime(DateUtils.getNowDate());
        sport.setUserId(SecurityUtils.getUserId());
        return sportMapper.insertSport(sport);
    }

    /**
     * 修改运动打卡
     *
     * @param sport 运动打卡
     * @return 结果
     */
    @Override
    public int updateSport(Sport sport) {
        return sportMapper.updateSport(sport);
    }

    /**
     * 批量删除运动打卡
     *
     * @param sportIds 需要删除的运动打卡主键
     * @return 结果
     */
    @Override
    public int deleteSportBySportIds(Long[] sportIds) {
        return sportMapper.deleteSportBySportIds(sportIds);
    }

    /**
     * 删除运动打卡信息
     *
     * @param sportId 运动打卡主键
     * @return 结果
     */
    @Override
    public int deleteSportBySportId(Long sportId) {
        return sportMapper.deleteSportBySportId(sportId);
    }
}
